package main

import (
	"fmt"
	"math"
	"strings"
)

func BinaryFormat(n int32) string {
	a := uint32(n)
	sb := strings.Builder{}      //利用string Builder 拼接字符串
	c := uint32(math.Pow(2, 31)) // 定义一个c无符号的int32来和a相与 math.Pow 方法 2的31次方 2*31转换成二进制就是 1000 0000 0000 0000 0000 0000 0000 0000
	for i := 0; i < 32; i++ {    //32位 所以就循环32次
		if a&c != 0 { // 拿a和c相与 如果不等于0
			sb.WriteString("1") //就拼接一个1
		} else {
			sb.WriteString("0") //如果等于0 就拼接一个0
		}
		c >>= 1 //没做一次比较 c就右移一位 继续作比较
	}
	return sb.String() //返回拼接完成后的二进制
}
func main() {
	fmt.Println(BinaryFormat(32515131))  // 传参进去
	fmt.Println(BinaryFormat(-32515131)) // 传参进去
	fmt.Println(BinaryFormat(0))         // 传参进去
}
